﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Core;
using ColorLife.Core.Helper;
public partial class CanBo_AddEditCanBo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
            GetData();
        }
    }
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (!IsPostBack)
        {
            ddlLoaiCanBo.DataSource = LoaiCanBo.All();
            ddlLoaiCanBo.DataTextField = "TenLoaiCB";
            ddlLoaiCanBo.DataValueField = "ID";
            ddlLoaiCanBo.DataBind();

            ddlDonVi.DataSource = DonVi.All();
            ddlDonVi.DataTextField = "TenDonVi";
            ddlDonVi.DataValueField = "ID";
            ddlDonVi.DataBind();

            ddlChucVu.DataSource = ChucVu.All();
            ddlChucVu.DataTextField = "TenChucVu";
            ddlChucVu.DataValueField = "ID";
            ddlChucVu.DataBind();

            ddlBangCap.DataSource = BangCap.All();
            ddlBangCap.DataTextField = "TenBangCap";
            ddlBangCap.DataValueField = "ID";
            ddlBangCap.DataBind();

            ddlMaNgach.DataSource = NgachCongChuc.All();
            ddlMaNgach.DataTextField = "TenNgach";
            ddlMaNgach.DataValueField = "ID";
            ddlMaNgach.DataBind();

            cblChucVu.DataSource = ChucVu.All();
            cblChucVu.DataTextField = "TenChucVu";
            cblChucVu.DataValueField = "ID";
            cblChucVu.DataBind();

            string pathDataDanToc = Server.MapPath("~/App_Data/DanToc.xml");
            var listDanToc = XmlHelper.List_XmlData(pathDataDanToc);
            foreach (var item in listDanToc)
            {
                ddlDanToc.Items.Add(new ListItem(item, item));
            }

            string pathDataTonGiao = Server.MapPath("~/App_Data/TonGiao.xml");
            var listTonGiao = XmlHelper.List_XmlData(pathDataTonGiao);
            foreach (var item in listTonGiao)
            {
                ddlTonGiao.Items.Add(new ListItem(item, item));
            }

            string pathDataTrinhDo = Server.MapPath("~/App_Data/TrinhDo.xml");
            var listTrinhDo = XmlHelper.List_XmlData(pathDataTrinhDo);
            foreach (var item in listTrinhDo)
            {
                ddlTrinhDo.Items.Add(new ListItem(item, item));
            }
        }
    }
    public int ID
    {
        get
        {
            if (Request.QueryString["ID"] != null)
                return int.Parse(Request.QueryString["ID"]);
            return -1;
        }
    }
    private void GetData()
    {
        CanBo canBo = CanBo.Single(ID);
        if (canBo != null)
        {
            txtHoTenCanBo.Text = canBo.HoTenCanBo;
            rdGioiTinh.SelectedValue = canBo.GioiTinh;
            txtNgaySinh.Text = canBo.NgaySinh.ToString();
            txtQueQuan.Text = canBo.QueQuan;
            txtSoCMND.Text = canBo.SoCMND.ToString();
            txtSoDienThoai.Text = canBo.SoDienThoai;
            txtNoiOHienTai.Text = canBo.NoiOHienTai;
            ddlTrinhDo.SelectedValue = canBo.TrinhDo;
            ddlDanToc.SelectedValue = canBo.DanToc;
            ddlTonGiao.SelectedValue = canBo.TonGiao;
            txtQuaTrinhDaoTao.Text = canBo.QuaTrinhDT;
            txtHinhDaiDien.Text = canBo.HinhDaiDien;
            imgthumb.Src = canBo.HinhDaiDien;
            txtHoKhauThuongTru.Text = canBo.HoKhauThuongTru;
            ddlLoaiCanBo.SelectedValue = canBo.MaLoaiCB.ToString();
            ddlDonVi.SelectedValue = canBo.MaDonVi.ToString();
            ddlBangCap.SelectedValue = canBo.MaBangCap.ToString();
            ddlMaNgach.SelectedValue = canBo.MaNgach.ToString();
            txtHeSoLuong.Text = canBo.HeSoLuong.ToString();
            txtTienBaoHiem.Text = canBo.TienBaoHiem.ToString();
            txtTienPhuCap.Text = canBo.TienPhuCap.ToString();
            txtNgayVaoDang.Text = canBo.NgayVaoDang == DateTime.MinValue ? "" : canBo.NgayVaoDang.ToShortDateString();
            rptChucVu.DataSource = CanBo.ListCanBoChucVu(ID);
            rptChucVu.DataBind();
        }
    }
    private CanBo SetData()
    {
        string hoTenCanBo = txtHoTenCanBo.Text;
        string gioiTinh =  rdGioiTinh.SelectedValue;
        DateTime ngaySinh = txtNgaySinh.Text.ToDateTime();
        string queQuan = txtQueQuan.Text;
        int soCMND = txtSoCMND.Text.ToInt();
        string soDienThoai = txtSoDienThoai.Text;
        string noiOHienTai = txtNoiOHienTai.Text;
        string trinhDo = ddlTrinhDo.SelectedValue;
        string danToc = ddlDanToc.SelectedValue;
        string tonGiao = ddlTonGiao.SelectedValue;
        string quaTrinhDaoTao = txtQuaTrinhDaoTao.Text;
        string hinhDaiDien = txtHinhDaiDien.Text;

        int maLoaiCanBo = ddlLoaiCanBo.SelectedValue.ToInt();
        int maDonVi = ddlDonVi.SelectedValue.ToInt();
        string hoKhauThuongTru = txtHoKhauThuongTru.Text;
        int maBangCap = ddlBangCap.SelectedValue.ToInt();
        int maNgach = ddlMaNgach.SelectedValue.ToInt();
        float heSoLuong = txtHeSoLuong.Text.ToInt();
        float tienBaoHiem = txtTienBaoHiem.Text.ToInt();
        float tienPhuCap = txtTienPhuCap.Text.ToInt();
        DateTime ngayVaoDang=txtNgayVaoDang.Text.ToDateTime();
        var entityNew = new CanBo
        {
            HoTenCanBo = hoTenCanBo,
            GioiTinh =gioiTinh,
            NgaySinh = ngaySinh,
            QueQuan = queQuan,
            SoCMND = soCMND,
            SoDienThoai = soDienThoai,
            NoiOHienTai = noiOHienTai,
            TrinhDo = trinhDo,
            DanToc = danToc,
            TonGiao = tonGiao,
            QuaTrinhDT = quaTrinhDaoTao,
            HinhDaiDien = hinhDaiDien,
            MaLoaiCB = maLoaiCanBo,
            MaDonVi = maDonVi,
            MaBangCap = maBangCap,
            MaNgach = maNgach,
            HeSoLuong = heSoLuong,
            TienBaoHiem = tienBaoHiem,
            TienPhuCap = tienPhuCap,
             NgayVaoDang=ngayVaoDang,
             HoKhauThuongTru = hoKhauThuongTru
        };
        if (ID < 0)
            return entityNew;
        else
        {
            var entityEdit = CanBo.Single(ID);
            entityEdit.HoTenCanBo = hoTenCanBo;
            entityEdit.GioiTinh = gioiTinh;
            entityEdit.NgaySinh = ngaySinh;
            entityEdit.QueQuan = queQuan;
            entityEdit.SoCMND = soCMND;
            entityEdit.SoDienThoai = soDienThoai;
            entityEdit.NoiOHienTai = noiOHienTai;
            entityEdit.TrinhDo = trinhDo;
            entityEdit.DanToc = danToc;
            entityEdit.TonGiao = tonGiao;
            entityEdit.QuaTrinhDT = quaTrinhDaoTao;
            entityEdit.HinhDaiDien = hinhDaiDien;
            entityEdit.MaLoaiCB = maLoaiCanBo;
            entityEdit.MaDonVi = maDonVi;
            entityEdit.MaBangCap = maBangCap;
            entityEdit.MaNgach = maNgach;
            entityEdit.HeSoLuong = heSoLuong;
            entityEdit.TienBaoHiem = tienBaoHiem;
            entityEdit.TienPhuCap = tienPhuCap;
            entityEdit.NgayVaoDang = ngayVaoDang;
            entityEdit.HoKhauThuongTru = hoKhauThuongTru;
            return entityEdit;
        }
    }
    protected void txtSave_Click(object sender, EventArgs e)
    { 
        var entity = SetData();
        // 1989 - 2014 
        int tuoi = DateTime.Now.Year - entity.NgaySinh.Value.Year;
        if (tuoi > 18)
        {
            if (ID > 0)
            {
                var id = CanBo.Update(entity);
                divAlert.InnerHtml = "<b>Thông báo:</b> Cập nhật dữ liệu thành công. #" + ID;
                divMsg.Visible = true;
            }
            else
            {
                var id = CanBo.Add(entity);
                if (id > 0)
                {
                    for (int i = 0; i < cblChucVu.Items.Count; i++)
                    {
                        if (cblChucVu.Items[i].Selected)                          
                            CanBoChucVu.Add(new CanBoChucVu { MaCanBo = id, MaChucVu = int.Parse(cblChucVu.Items[i].Value) });
                    }
                }
                divAlert.InnerHtml = "<b>Thông báo:</b> Thêm mới dữ liệu thành công.";
                divMsg.Visible = true;
            }
        }
        else
        {
            divAlert.InnerHtml = "<b>Thông báo:</b> Ngày sinh không hợp lệ. Tuổi ít nhất là 18 tuổi.";
            divMsg.Visible = true;
        }         
    }
    protected void btnAddChucVu_ServerClick(object sender, EventArgs e)
    {

        var canBo = CanBo.Single(ID);
        if (canBo != null)
        {
            int id = CanBoChucVu.Add(new CanBoChucVu
            {
                MaCanBo = canBo.ID,
                MaChucVu = int.Parse(ddlChucVu.SelectedValue)
            });
            if (id > 0)
            {
                divAlert.InnerHtml = "<b>Thông báo:</b> Thêm mới dữ liệu thành công.";
                divMsg.Visible = true;
            }
            else
            {
                divAlert.InnerHtml = "<b>Thông báo:</b> Chức vụ đã tồn tại.";
                divMsg.Visible = true;
            }
        }
        Response.Redirect(Request.Url.AbsoluteUri);
    }
}